Multiple cache communication

ABSTRACT

The invention provides a method and system for operating multiple communicating caches. Between caches, unnecessary transmission of repeated information is substantially reduced. Each cache maintains information to improve the collective operation of the system of multiple communicating caches. This can include information about the likely contents of each other cache, or about the behavior of client devices or server devices coupled to other caches in the system. Pairs of communicating caches substantially compress transmitted information. This includes both reliable compression, in which the receiving cache can reliably identify the compressed information in response to the message, and unreliable compression, in which the receiving cache will sometimes be unable to identify the compressed information. A first cache refrains from unnecessarily transmitting the same information to a second cache when each already has a copy. This includes both maintaining a record at a first cache of information likely to be stored at a second cache, and transmitting a relatively short identifier for that information in place of the information itself. A set of caches are disposed in a directed graph structure, with a set of root caches disposed for coupling to server devices and a set of leaf caches disposed for coupling to client devices. Both root caches and leaf caches maintain non-cacheable objects beyond their initial use, along with digests of the non-cacheable objects. When a server device returns identical information to a root cache, root caches can transmit only associated digests to leaf caches, avoiding re-transmitting the entire non-cacheable object.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] This invention relates to caches.

[0003] 2. Related Art

[0004] In a computer system in which client devices request informationfrom one or more server devices, it is sometimes desirable to provide acache; that is, a device that maintains copies of requested informationso multiple requests for the same information can be satisfied at thecache. When requests for information are satisfied at the cache, theserver devices need not receive the requests, process them, andretransmit the same information over a communication channel that linksthe client devices and the server devices. For example, the serverdevices can be web servers, the client devices can be web clients, thecommunication channel can be an IP network such as the Internet, and therequested information can be web objects.

[0005] Some information requested from the server devices is considerednot cacheable, for one or more of several reasons. As examples, theserver can refuse to allow the information to be cached, or theinformation can be a result of a dynamic process that can providediffering results for the same request (so caching would obviate theoperation of that dynamic process). An example of dynamically processedinformation could include advertisements, database searches, or outputfrom CGI scripts.

[0006] However, it often occurs that non-cacheable information isrequested a second time without having changed, so the second request tothe server results in identical information being returned. In a systemwith multiple communicating caches, transmitting the same informationfrom a first cache to a second cache (when each already has a copy) isan inefficient use of communication resources.

[0007] Accordingly, it would be desirable to provide a method and systemfor operating a set of multiple communicating caches, in whichtransmission of repeated information is substantially reduced oreliminated. A first aspect of the invention is to maintain informationat each cache to improve the collective operation of multiplecommunicating caches. A second aspect of the invention is tosubstantially reduce the amount of information transmitted betweenmultiple communicating caches. A third aspect of the invention is torefrain from unnecessarily transmitting the same data from a first cacheto a second cache when the latter already has a copy.

SUMMARY OF THE INVENTION

[0008] The invention provides a method and system for operating a set ofmultiple communicating caches. Between caches, unnecessary transmissionof repeated information is substantially reduced.

[0009] In a first aspect of the invention, each cache maintainsinformation to improve the collective operation of the system ofmultiple communicating caches. This can include information about thelikely contents of each other cache, or about the behavior of clientdevices or server devices coupled to other caches in the system.

[0010] In a second aspect of the invention, pairs of communicatingcaches substantially compress transmitted information. This includesboth compression in which the receiving cache can reliably identify thecompressed information in response to the message, and compression inwhich the receiving cache will sometimes be unable to identify thecompressed information.

[0011] In a third aspect of the invention, a first cache refrains fromunnecessarily transmitting the same information to a second cache wheneach already has a copy. This includes both maintaining a record at afirst cache of information likely to be stored at a second cache, andtransmitting a relatively short identifier for that information in placeof the information itself.

[0012] In a preferred embodiment, a set of caches are disposed in adirected graph structure, with a set of root caches disposed forcoupling to server devices and a set of leaf caches disposed forcoupling to client devices. Both root caches and leaf caches storenon-cacheable objects beyond their initial use, along with relativelyshort identifiers for the non-cacheable objects. When a server devicereturns identical information to a root cache in response to a requestfor a non-cacheable object, that root cache transmits only theidentifier of the non-cacheable object to the requesting leaf cache,avoiding re-transmitting the entire object if the leaf cache still hasthe object.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIG. 1 shows a block diagram of a system having multiple caches.

[0014]FIG. 2 shows a process flow diagram for a method of using a systemhaving multiple caches.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0015] In the following description, a preferred embodiment of theinvention is described with regard to preferred process steps and datastructures. Those skilled in the art would recognize after perusal ofthis application that embodiments of the invention can be implementedusing one or more general purpose processors or special purposeprocessors or other circuits adapted to particular process steps anddata structures described herein, and that implementation of the processsteps and data structures described herein would not require undueexperimentation or further invention.

[0016] Inventions disclosed herein can be used in conjunction withinventions disclosed in one or more of the following patentapplications:

[0017] Provisional U.S. Application No. 60/048,986, filed Jun. 9, 1997,in the name of inventors Michael Malcolm and Robert Zarnke, titled“Network Object Cache Engine”, assigned to CacheFlow, Inc., attorneydocket number CASH-001 (P).

[0018] U.S. application Ser. No. 08/959,058, filed Oct. 28, 1997, in thename of inventors Michael Malcolm and Ian Telford, titled “AdaptiveActive Cache Refresh”, assigned to CacheFlow, Inc., attorney docketnumber CASH-003.

[0019] U.S. application Ser. No. 08/959,313, filed Oct. 28, 1997, in thename of inventors Doug Crow, Bert Bonkowski, Harold Czegledi, and TimJenks, titled “Shared Cache Parsing and Pre-fetch”, assigned toCacheFlow, Inc., attorney docket number CASH-004.

[0020] U.S. application Ser. No. 09/093,533, filed Jun. 8, 1998, in thename of inventors Michael Malcolm and Robert Zarnke, titled “NetworkObject Cache Engine”, assigned to CacheFlow, Inc., attorney docketnumber CASH-001. and

[0021] PCT International Application PCT/US98/11834, filed Jun. 9, 1997,in the name of assignee CacheFlow, Inc., and inventors Michael Malcolmand Robert Zarnke, titled “Network Object Cache Engine”, attorney docketnumber CASH-001 PCT.

[0022] These applications are referred to herein as the “CacheDisclosures,” and are hereby incorporated by reference as if fully setforth herein.

[0023] System Elements

[0024]FIG. 1 shows a block diagram of a system having multiple caches.

[0025] A system 100 includes a cache system 110, at least one clientdevice 120, and at least one server device 130.

[0026] Client Device

[0027] Each client device 120 is coupled to the cache system 110 using aclient communication path 121. The client communication path 121 caninclude a dial-up connection, a LAN (local area network), a WAN (widearea network), an ATM network, an IP network (such as an internet,intranet, or extranet), or some combination thereof. In a preferredembodiment, the client communication path 121 includes a dial-upconnection, such as for coupling a subscriber to an ISP (internetservice provider), or a LAN, such as for coupling a workstation to aninternet connection.

[0028] As used herein, the terms “client” and “server” refer torelationships between the client or server and the cache 110, notnecessarily to particular physical devices.

[0029] As used herein, the term “client device” includes any devicetaking on the role of a client in a client-server environment. There isno particular requirement that the client devices 110 must be individualdevices; they can each be a single device, a set of cooperating devices,a portion of a device, or some combination thereof.

[0030] Server Device

[0031] Each server device 130 is also coupled to the cache system 110using a server communication path 131. The server communication path 131can include a dialup connection, a LAN (local area network), a WAN (widearea network), an ATM network, an IP network (such as an internet,intranet, or extranet), or some combination thereof. In a preferredembodiment, the server communication path 131 includes an internetbackbone and an internet connection between the cache system 110 and theinternet backbone.

[0032] As used herein, the term “server device” includes any devicetaking on the role of a server in a client-server environment. There isno particular requirement that the server devices 130 must be individualdevices; they can each be a single device, a set of cooperating devices,a portion of a device, or some combination thereof.

[0033] The server device 130 includes memory or storage 132 forrecording one or more web objects 133. The web objects 133 can includeany type of data suitable for transmitting to the client device 110,such as the following:

[0034] text, color, formatting and directions for display;

[0035] pictures, data in graphical formats (such as GIF or JPEG), othermultimedia data;

[0036] animation, audio (such as streaming audio), movies, and video(such as streaming video), and other data in audio or visual formats(such as MPEG);

[0037] program fragments, including applets, Java, JavaScript, andActiveX; and

[0038] other web documents (such as when using frames); and

[0039] other data types (such as indicated by future extensions to HTML,DHTML, SGML, XML, or similar languages).

[0040] Cache System

[0041] The cache system 110 includes a set of caches 111. Each cache 111is designated a “leaf cache” if it is coupled to one or more clientcommunication paths 121, and is designated a “root cache” if it iscoupled to one or more server communication paths 131. The cache system110 includes an inter-cache communication path 112 for communicationbetween and among caches 111.

[0042] The inter-cache communication path 112 can include a plurality ofdirect connections, a LAN (local area network), a WAN (wide areanetwork), an IP network (such as an internet), or some combinationthereof. In a preferred embodiment, the intercache communication path112 includes a plurality of direct connections between pairs ofindividual caches 111.

[0043] In a preferred embodiment, the caches 111 in the cache system 110are disposed in a graph structure. One or more leaf caches 111 arecoupled to client communication paths 121, and one or more root caches111 coupled to one or more server communication paths 131. Whereappropriate, a set of intermediate caches 111 are coupled to the leafcaches 111 and to the root caches 111.

[0044] In a preferred embodiment, the graph structure is a treestructure, with a single root cache 111 and a plurality of leaf caches111. For example, in a cache system 110 disposed for use with an ISP(internet service provider), there is one root cache 111 coupled to aninternet backbone, and there is one leaf cache 111 for each POP (pointof presence). In this example, the inter-cache communication path 112includes direct connections (such as T1 or T3 connections) between theroot cache 111 and each leaf cache 111.

[0045] Cache Devices

[0046] Each cache 111 includes a processor, program and data memory, andmemory or storage 112 for recording one or more web objects 133. Eachcache 111 retains the web objects 133 for repeated serving to clientdevices 120 in response to web requests.

[0047] In a preferred embodiment, each cache 111 includes arouter-switch 113, for receiving messages and distinguishing types ofmessages that should be processed by the cache 111 from those thatshould not. For example, the router-switch 113 can divert all requestsusing FTP (file transfer protocol) or HTTP (hypertext transfer protocol)to the cache 111 for processing, while passing through other types ofrequests unchanged.

[0048] In a preferred embodiment, each cache 111 includes a cache devicesuch as described in the Cache Disclosures, hereby incorporated byreference as if fully set forth therein, and is disposed for operatingas described therein.

[0049] Multiple Cache Communication

[0050] Each leaf cache 111 receives requests from client devices 120 forweb objects 133. The web objects 133 might be cacheable ornon-cacheable.

[0051] If a client device 120 requests a cacheable web object 133, theleaf cache 111 might already have the requested web object 133 in itsmemory or storage 112. If so, the leaf cache 111 serves the requestedweb object 133 to the client device 120 without having to request theweb object 133 from the root cache 111 or from the server device 130. Ifthe leaf cache 111 does not already have the requested web object 133,the leaf cache 111 requests it from the root cache 111.

[0052] The root cache 111 performs a similar caching function, returningthe requested cacheable web object 133 directly to the leaf cache 111 ifit is already present in its own memory or storage 112, without havingto request that web object 133 from the server device 130. If the rootcache 111 does not already have the requested web object 133 in itsmemory or storage 112, the root cache 111 requests it from the serverdevice 120.

[0053] If the leaf cache 111 and the root cache 111 do not already havea copy of the web object 133 in their respective memory or storage 112,the root cache 111 requests the web object 133 from the server device120. Similarly, if the web object 133 is considered not cacheable, theroot cache 111 requests the web object 133 from the server device 120whether or not it has already that web object 133 in their respectivememory or storage 112. The server device 120 receives the request andreturns the requested web object 133 to the root cache 111.

[0054] Objects Already in Storage

[0055] The root cache 111 receives the requested web object 133 from theserver device 110, records it in its memory or storage 112, anddetermines an object signature 134 for the web object 133. In apreferred embodiment, the root cache 111 computes the object signature134 itself. In alternative embodiments, the server device 120 maycompute and record the object signature 134 and transmit it to the rootcache 111 with the web object 133.

[0056] In a preferred embodiment, the object signature 134 includes anMD5 digest of the web object 133. In alternative embodiments, the objectsignature 134 may comprise a CRC, MD4, SHA, or other known function ofthe web object 133.

[0057] There is no particular need for any device to be able to recoverthe web object 133 a priori from the object signature 134. It issufficient that the root cache 111 or the leaf cache 111 can determine,in response to the object signature 134, if the web object 133 ispresent in its memory or storage 112, and if so, which web object 133corresponds to that object signature 134.

[0058] If the web object 133 is cacheable but was requested from theserver device 110, the request from the server device 120 was due to acache miss. However, it can still occur that the leaf cache 111 (or someintermediate cache 111) already has the web objects 133 in its memory orstorage 112, such as recorded in association with a different URL(uniform resource locator) or other identifier. In a preferredembodiment, each cache 111 records web objects 133 in association withthe URL used to request those web objects 133.

[0059] For a first example, multiple server devices 120 can recordmirror copies of identical web objects 133. For a second example,non-identical web objects 133 can include identical embedded web objects133 (such as common graphics, animation, or program fragments).

[0060] If the web object 133 is considered non-cacheable, it wasrequested from the server device 120 because non-cacheable web objects133 are not meant to be served from the cache 111. However, it can stilloccur that the leaf cache 111 (or some intermediate cache 111) alreadyhas the web objects 133 in its memory or storage 112, because thenon-cacheable web object 133 had been requested earlier.

[0061] For a first example, if the web object 133 is responsive to a CGIscript or database search, it can be identical to the results of anearlier response to that CGI script or database search. For a secondexample, if the web object 133 is determined dynamically by the serverdevice 130 (such as randomly selected advertisements), it can beidentical to an earlier advertisement transmitted by the server device130.

[0062] The root cache 111 transmits the object signature 134 to the leafcache 111. The leaf cache 111 determines, in response to the objectsignature 134, whether it already has the associated web object 133 inits memory or storage 112 and if so, which one is the associated webobject 133. If so, the leaf cache 111 serves the associated web object133 to the client device 120 from its memory or storage 112 without theroot cache 111 having to actually transmit the entire web object 133. Ifnot, the root cache 111 transmits the actual web object 133 to the leafcache 111, which can then serve it to the client device 120.

[0063] In a preferred embodiment, the root cache 111 includes a bitmap114 in its memory or storage 112 for each non-cacheable web object 133,including one bit 115 for each leaf cache 111. Each bit 115 of thebitmap 114 indicates whether its associated leaf cache 111 has a copy ofthe web object 133.

[0064] The root cache 111 directly transmits the actual web object 133to the leaf cache 111 if the associated bit 115 of the bitmap 114indicates that the leaf cache 111 does not have the web object 133. Ifthe bit 115 indicates that the leaf cache 111 does have the web object133, the root cache 111 attempts to transmit only the object signature134. However, even if the bit 115 indicates that the leaf cache 111 doeshave the web object 133, it may occur that the leaf cache 111, being acache, has discarded the web object 133 in the interim. In this case,the leaf cache 111 so indicates and re-requests the web object 133 fromthe root cache 111.

[0065] In a preferred embodiment, when the root cache 111 transmits theobject 9 signature 134 to the leaf cache 111, it so indicates using adata type, such as a MIME type, or a new type of object, indicating thatthe transmission includes only the object signature 134.

[0066] Compression for Transmission

[0067] When transmitting actual web objects 133 between caches 111 (suchas from the root cache 111 to the leaf cache 111), those web objects 133are substantially compressed for transmission and decompressed afterreception. Compression for transmission can be applied both to cacheableand to non-cacheable web objects 133.

[0068] Compression for transmission can include various techniques, suchas Huffman coding, Liv-Zempel compression, or other known losslesscompression. Compression for transmission can also include known lossycompression, such as JPEG, MPEG, or other audio and video codectechniques, when appropriate for the type of web object 133.

[0069] Those skilled in the art will recognize, after perusal of thisapplication, that transmission of the object signature 134 in place ofthe actual web object 133 is a form of substantial compression. Thisform of compression is unreliable, in the computer science sense thatthe receiver is not guaranteed to be able to recover the web object 133from its object signature 134. In fact, using this form of compressionthe leaf cache 111 can only do so if the web object 133 is alreadyrecorded in its memory or storage 112.

[0070] Unreliable Dictionary Compression

[0071] As used herein, “dictionary compression” means a form ofcommunication in which a sender and a destination each maintain a set ofdictionary elements and a set of associated tag values, each tag valuebeing representative of one of the dictionary elements. There is noparticular requirement that the dictionary elements can be recoveredfrom their associated tag values without further information. Rather,dictionary compression refers generally to a system in which thedictionary elements can be associated with arbitrary tag values.

[0072] The sender and the destination each associate the same tag valuewith the same dictionary element. For example, the sender can transmitthe dictionary element. along with an arbitrarily selected tag value, tothe destination to make the association. Systems in which the senderdoes this, and the destination maintains a dictionary of such tag valuesin response thereto, are known in the art.

[0073] As used herein, “unreliable” dictionary compression means thatthe destination might possibly discard the association between the tagvalue and the dictionary element.

[0074] In a preferred embodiment, each dictionary element includes acomplete web object 133, and the tag value associated with eachparticular web object 133 is a known function of that particular webobject 133. The known function is preferably an MD5 signature, as notedherein.

[0075] In a preferred embodiment, the destination (because it is acache) can discard any particular web object 133, and thus lose theassociation between that particular web object 133 and its MD5signature. That is, the destination (because it has discarded theparticular web object 133) can no longer determine if a particular MD5signature is associated with any known web object 133. Moreover, thedestination cannot determine the web object 133 in response to the MD5signature without further information.

[0076] Transmission of the object signature 134 in place of the actualweb object 133 is a form of dictionary compression in which the entireactual web object 133 is the dictionary element. If the leaf cache 111has discarded that dictionary element, it requests the root cache 111 toretransmit the actual web object 133 using a second form of compression.For example, the second form of compression can include a known losslesscompression technique such as Liv-Zempel compression or the form ofcompression used in the PKZIP product available from PKWare, Inc.

[0077] Those skilled in the art will recognize, after perusal of thisapplication, that unreliable dictionary compression is applicable invarious other applications that can use compression. In a preferredembodiment, unreliable compression is acceptable because the root cache111 can retransmit the web object 133 using a more reliable (butpossibly less strong) compression technique.

[0078] Other Web Object Information

[0079] The root caches 111 and the leaf caches 111 can also exchangeother information about the web objects 133.

[0080] In a preferred embodiment, the cache system 110 collectivelymaintains information for each web object 133 regarding the following:

[0081] A probability the web object 133 in the cache system 110 will benext requested by some client device 120. This information will likelybe best available at the leaf caches 111. and

[0082] A probability the web object 133 in the cache system 10 will bestale. This information will likely be best available at the root caches111.

[0083] The cache system 110 can collectively determine from thisinformation whether the web object 133 is the next web object 133recorded by the cache system 110 to be served state. As described in theCache Disclosures, particularly attorney docket numbers CASH-003 andCASH-004, this information can be used to determine which web objects133 to actively refresh.

[0084] Active refresh can also be applied to frequently-requestednon-cacheable web objects 133, and distributed within the cache system110, even though those web objects 133 are re-requested from the serverdevices 120 each time. Active refresh is well suited to web objects 133such as advertisements, news reports, stock quotes, weather reports, andthe like.

[0085] The cache system 110 can also maintain information about each webobject 133 regarding at which cache 111 in the cache system 110 that webobject 133 is recorded. With this information, the root cache 111 canrequest cached web objects 133 from one of the leaf caches 111, inaddition to or instead of re-requesting the web objects 133 from serverdevices 120.

[0086] Method of Operation

[0087]FIG. 2 shows a process flow diagram for a method of using a systemhaving multiple caches.

[0088] A method 200 is performed by the system 100, including the cachesystem 110, the client devices 120, and the server devices 130.

[0089] At a flow point 210, one of the client devices 120 is ready torequest a web object 133.

[0090] At a step 211, one of the client devices 120 sends a message toits associated leaf cache 111 requesting a selected web object 133. Therequest message preferably uses the FTP or HTTP protocol, and includes aURL for the selected web object 133.

[0091] At a step 212, the leaf cache 111 determines if the web object133 is cacheable or non-cacheable. If the web object 133 is cacheable,the method 200 proceeds with the next step. If the web object 133 isnon-cacheable, the method 200 proceeds with the flow point 220.

[0092] At a step 213, the leaf cache 111 determines if the web object133 is present in its memory or storage 112. In a preferred embodiment,the leaf cache 111 makes this determination in response to the URL forthe selected web object 133 included in the request from the clientdevice 120. If the web object 133 is present, the method 200 proceedswith the next step. If the web object 133 is not present, the method 200proceeds with the flow point 220.

[0093] At a step 214, the leaf cache 111 serves the web object 133 tothe client device 120. The method 200 continues with the flow point 210.

[0094] At a flow point 220, the leaf cache 111 is unable to serve theweb object 133 from its memory or storage 112, either because there hasbeen a leaf cache miss or because the web object 133 is non-cacheable.

[0095] At a step 221, similar to the step 211, the leaf cache 111 sendsa message to the root cache 111 requesting the web object 133.

[0096] At a step 222, similar to the step 212, the root cache 111determines if the web object 133 is cacheable or non-cacheable. If theweb object 133 is cacheable, the method 200 proceeds with the next step.If the web object 133 is non-cacheable, the method 200 proceeds with theflow point 230.

[0097] At a step 223, similar to the step 213, the root cache 111determines if the web object 133 is present in its memory or storage112. In a preferred embodiment, the root cache 111 makes thisdetermination in response to the URL for the selected web object 133included in the request from the client device 120. If the web object133 is present, the method 200 proceeds with the next step. If the webobject 133 is not present, the method 200 proceeds with the flow point230.

[0098] At a step 224, similar to the step 214, the root cache 111transmits the web object 133 to the leaf cache 111. The method 200continues with the flow point 210.

[0099] At a flow point 230, the root cache 111 is unable to transmit theweb object 133 from its memory or storage 112, either because there hasbeen a root cache miss or because the web object 133 is non-cacheable.

[0100] At a step 231, similar to the step 211, the root cache 111 sendsa message to the indicated server device 130 requesting the web object133. The request message preferably uses the FTP or HTTP protocol, andincludes a URL for the selected web object 133.

[0101] At a step 232, the server device 130 transmits the web object 133to the root cache 111.

[0102] At a step 233, the root cache 111 determines an object signature134 for the web object 133.

[0103] At a step 234, the root cache 111 determines if the web object133 is present in its memory or storage 112. In a preferred embodiment,the root cache 111 makes this determination in response to the objectsignature 134. If the web object 133 is present, the method 200 proceedswith the next step. If the web object 133 is not present, the method 200proceeds with the flow point 240.

[0104] At a step 235, the root cache 111 determines if the web object133 is likely present at the requesting leaf cache 111. In a preferredembodiment, the root cache 111 makes this determination in response tothe bitmap 114 for the web object 133. If the web object 133 is likelypresent at the leaf cache 111, the method 200 proceeds with the nextstep. If the web object 133 is likely not present at the leaf cache 111,the method proceeds with the flow point 240.

[0105] At a step 236, the root cache 111 transmits the object signature134 to the leaf cache 111.

[0106] At a step 237, the leaf cache 111 determines if the web object133 is present in its memory or storage 112, in response to the objectsignature 134. If the web object 133 is not present, the method 200proceeds with the next step. If the web object 133 is present, themethod 200 proceeds with the flow point 240.

[0107] At a step 238, the leaf cache 111 transmits a message to the rootcache 111 indicating that the web object 133 is not present.

[0108] At a step 239, the root cache 111 transmits the actual web object133 to the leaf cache 111. As noted above, the actual web object 133 iscompressed for transmission and decompressed upon reception.

[0109] At a flow point 240, the leaf cache 111 is ready to serve the webobject 133 to the requesting client device 120. The method proceeds withthe step 214.

[0110] Alternative Embodiments

[0111] Although preferred embodiments are disclosed herein, manyvariations are possible which remain within the concept, scope, andspirit of the invention, and these variations would become clear tothose skilled in the art after perusal of this application.

1. A method including steps for compressing, at a first cache, an objectstored at said first cache; coupling a compressed version of said objectfrom said first cache to a second cache. decompressing, at said secondcache, an uncompressed version of said object.
 2. A method as in claim1, wherein said second cache can only recover an uncompressed objectfrom said compressed object in response to a contents of said secondmemory.
 3. A method as in claim 1, wherein said second cache can recoveran uncompressed object from said compressed object without furtherinformation.
 4. A method as in claim 1, wherein said steps forcompressing include steps for determining a known function of a firstobject at said first cache; said compressed version includes a result ofsaid known function; said steps for decompressing include steps fordetermining said known function of a second object at said second cache,and comparing said compressed version with a result of said knownfunction of said second object.
 5. A method as in claim 4, wherein saidknown function is substantially irreversible.
 6. A method includingsteps for determining, at a first cache, a first object signatureresponsive to said first object; coupling said first object signature toa second cache; comparing, at said second cache, said first objectsignature with a function of at least one second object; refraining fromtransmitting said first object in response to said steps for comparing.7. A method as in claim 6, including steps for coupling a result of saidsteps for comparing to said first cache; and coupling said first objectto said second cache responsive to said comparison result.
 8. A methodas in claim 6, including steps for storing at said first cacheinformation whether said first object is likely to be stored at saidsecond cache; wherein said steps for transmitting said object signatureare responsive to said information.
 9. A method including steps fordetermining, at a first cache, first information regarding a likelihoodwhether an object received from a server is stale; determining, at asecond cache, second information regarding a likelihood whether saidobject will be requested by a client; coupling said first informationand said second information between said first memory and said secondmemory; discarding said object at first cache disposed in response tosaid second information; and discarding said object at said second cachedisposed in response to said first information.
 10. A method includingsteps for storing a first object at a first cache; determining an objectsignature at said first cache in response to said object; transmittingsaid object signature to a second cache; comparing said object signaturewith a function of at least one object stored at said second cache;transmitting said first object to said second cache in response to saidsteps for comparing.
 11. A method as in claim 10, including steps forstoring at said first cache information whether said first object islikely to be stored at said second cache; wherein said steps fortransmitting said object signature are responsive to said information.12. A method as in claim 10, including steps for transmitting a resultof said steps for comparing to said first cache.
 13. A method includingsteps for storing, at a first cache, a first object and firstinformation regarding whether to discard said first object; storing, ata second cache, a second object and second information regarding whetherto discard said second object; coupling said first information to saidsecond cache; and discarding said second object in response to saidfirst information and in response to said second information.
 14. Amethod as in claim 13, including steps for coupling said secondinformation to said first cache; and discarding said first object inresponse to said first information and in response to said secondinformation.
 15. A method as in claim 13, wherein said first informationincludes a likelihood of said object being stored at said second cache.16. A method including steps for storing, at a first cache, an objectfrom a server and first information regarding said object at saidserver; storing, at a second cache, an object for delivery to a clientand second information regarding requests for said object by saidclient; transmitting said first information from said first cache tosaid second cache; transmitting said second information from said secondcache to said first cache; whereby said first cache and said secondcache can collectively operate more effectively.
 17. A system includinga first cache disposed for being coupled to a server, and having memoryfor storing an object from said server and for storing first informationregarding said object at said server; a second cache disposed for beingcoupled to a client, and having memory for storing said object fordelivery to said client and for storing second information regardingrequests for said object by said client; a first communication pathbetween said first cache and said second cache, disposed fortransmitting said first information from said first cache to said secondcache; a second communication path between said first cache and saidsecond cache, disposed for transmitting said second information fromsaid second cache to said first cache; whereby said first cache and saidsecond cache can collectively operate more effectively.
 18. A systemincluding a first cache disposed for being coupled to a server, andhaving memory for storing an object from said server, said object havingan associated object signature; a second cache disposed for beingcoupled to a client, and having memory for storing said object fordelivery to said client; a communication path between said first cacheand said second cache. whereby said first cache can transmit either saidobject signature or said object to said second cache; whereby said firstcache can refrain from transmitting said object to said second cachewhen said object is already stored at said second cache.
 19. A system asin claim 18, including a communication path between said second cacheand said first cache, whereby said second cache can transmit a result ofa comparison between said object signature and said object at saidsecond cache.
 20. A system as in claim 18, including a communicationpath coupling said object signature to said second cache; coupling aresult of a comparison between said object signature and a function ofsaid object at said second cache; and coupling said object to saidsecond cache responsive to said comparison result.
 21. A system as inclaim 18, including a first communication path coupling said objectsignature to said second cache; a second communication path coupling tosaid first cache a result of a comparison between said object signatureand a function of said object at said second cache; and a thirdcommunication path coupling said object to said second cache responsiveto said comparison result.
 22. A system as in claim 18, including athird cache disposed for being coupled to a second client, and havingmemory for storing said object for delivery to said second client; acommunication path between said first cache and said third cache,whereby said first cache can transmit either said object signature orsaid object to said third cache; whereby said first cache can refrainfrom transmitting said object to said third cache when said object isalready stored at said third cache.
 23. A system as in claim 18,including memory at said first cache including information whether saidobject is likely to be stored at said second cache.
 24. A systemincluding a first cache including a first memory and an informationcompressor; a second cache including a second memory and an informationdecompressor; and a communication path disposed for coupling acompressed object from said first cache to said second cache.
 25. Asystem as in claim 24, wherein said first memory includes a firstobject; said information compressor includes a known function; saidcommunication path is disposed for coupling to said second cache a firstresult of said known function applied to said first object; said secondmemory includes a second object; said information decompressor includessaid known function, and a comparison between said first result and asecond result of said known function applied to said second object;whereby said second cache is disposed for determining that said secondobject is substantially identical to said first object in response to aresult of said comparison.
 26. A system as in claim 25, wherein saidknown function is substantially irreversible.
 27. A system as in claim24, wherein said information compressor is lossy.
 28. A system as inclaim 24, wherein said second cache can only recover an uncompressedobject from said compressed object in response to a contents of saidsecond memory.
 29. A system as in claim 24, wherein said second cachecan recover an uncompressed object from said compressed object withoutfurther information.
 30. A system including a first cache including afirst object and a first object signature responsive to said firstobject; a second cache including a second object, said second cachecoupled to said first object signature; said first cache coupled to aresult of a comparison between said first object signature and a secondobject signature responsive to said second object; whereby said firstcache can refrain from transmitting said first object in response tosaid comparison.
 31. A system as in claim 30, including a communicationpath coupling said first object signature to said second cache; couplingsaid comparison result to said first cache; and coupling said firstobject to said second cache responsive to said comparison result.
 32. Asystem as in claim 30, including a first communication path couplingsaid first object signature to said second cache; a second communicationpath coupling said comparison result to said first cache; and a thirdcommunication path coupling said first object to said second cacheresponsive to said comparison result.
 33. A system as in claim 30,including a third cache including a third object, said third cachecoupled to said first object signature; said first cache coupled to aresult of a second comparison between said first object signature and athird object signature responsive to said third object; whereby saidfirst cache can refrain from transmitting said first object in responseto said second comparison.
 34. A system as in claim 30, includinginformation at said first cache whether said transmitting said firstobject is likely to be desirable.
 35. A system including a first cacheincluding a first object and first information regarding whether todiscard said first object; a second cache coupled to said firstinformation, said second cache including a second object and secondinformation regarding whether to discard said second object, said secondcache disposed for discarding said second object in response to saidfirst information and in response to said second information.
 36. Asystem as in claim 35, wherein said first cache is coupled to saidsecond information and is disposed for discarding said first object inresponse to said first information and in response to said secondinformation.
 37. A system as in claim 35, wherein said first informationincludes a likelihood of said object being stored at said second cache.38. A system including a first cache including first informationregarding a likelihood whether an object received from a server isstale; a second cache including second information regarding alikelihood whether said object will be requested by a client; acommunication path capable of coupling said first information and saidsecond information between said first memory and said second memory;said first cache disposed for discarding said object in response to saidsecond information; and said second cache disposed for discarding saidobject in response to said first information.
 39. A system including afirst memory including a first object received from a server and a firstobject signature responsive to said first object; a second memoryincluding a second object ready for delivery to a client; acommunication path capable of coupling said first object signature tosaid second memory; a comparator coupled to said second memory and tosaid communication path, responsive to whether a second object signatureresponsive to said second object is substantially identical to saidfirst object signature; said communication path capable of coupling anoutput of said comparator to said first memory; whereby said firstmemory can refrain from delivering said first object to said secondmemory in response to said output of said comparator.
 40. A systemincluding a plurality of caches, each including memory; a communicationnetwork coupling each said cache to substantially all other said caches;at least a first said cache having an object in its memory and disposedto transmit said object to a second said cache only if said second cachedoes not already have said object in its memory.
 41. A system as inclaim 40, including memory at said first cache including informationwhether said object is likely to be stored at said second cache.
 42. Asystem as in claim 40, wherein said communication network couples anobject signature for said object to said second cache; couples to saidfirst cache a result of a comparison between said object signature and afunction of said object at said second cache; and couples said object tosaid second cache responsive to said comparison result.
 43. A system asin claim 40, wherein said first cache includes a first signaturefunction coupled to memory for said first cache; said second cacheincludes a second signature function coupled to memory for said secondcache, and a comparator coupled to said first signature function andsaid second signature function; wherein said first cache refrains fromtransmitting said first object in response to said comparator.
 44. Asystem including a set of root caches disposed for receiving a data itemfrom a set of servers; a set of leaf caches disposed for delivering saiddata item to a set of clients, at least one of said leaf caches beingcoupled to at least one of said root caches; wherein said root cachesand said leaf caches include memory having said data item stored thereinafter an initial use of said data item; wherein said data item has anassociated item signature, said item signature being responsive to saiddata item; wherein if a server returns a second data item substantiallyidentical to said one data item, said one root cache transmits said itemsignature to said one leaf cache; whereby said one root cache refrainsfrom transmitting said data item more than once to said one leaf cache.45. A system as in claim 44, wherein said set of root caches and saidset of leaf caches are disposed in a tree structure.
 46. A system as inclaim 44, wherein said set of root caches has exactly one member.
 47. Asystem as in claim 44, including memory in said one root cacheindicating for each particular said leaf cache whether said particularleaf cache is likely to have said data item in its memory.
 48. A methodincluding steps for associating, at both a source and a destination, atag value with a dictionary element; if said dictionary element ispresent at said destination, transmitting, from said source to saiddestination, said tag value in place of said dictionary element; if saiddictionary element is not present at said destination, transmitting,from said source to said destination, said dictionary element.
 49. Amethod including steps for providing a set of associations, at both asource and a destination, each association including a tag value and adictionary element; possibly discarding one or more of said set ofassociations at said destination; transmitting, from said source to saiddestination, a selected tag value or its associated dictionary element,in response to said steps for possibly discarding.
 50. A method as inclaim 49, including steps for transmitting, from said destination tosaid source, an indication responsive to said steps for possiblydiscarding; whereby if said dictionary element is still present at saiddestination, said source does not need to transmit said dictionaryelement to said destination.
 51. A method including steps fortransmitting a dictionary element from a source to a destination;associating, at both said source and said destination, a tag value withsaid dictionary element; possibly discarding said dictionary element atsaid destination; transmitting, from said source to said destination,said tag value or said dictionary element in response to said steps forpossibly discarding.
 52. A method as in claim 51, including steps fortransmitting, from said destination to said source, an indicationresponsive to said steps for possibly discarding; whereby if saiddictionary element is still present at said destination, said sourcedoes not need to transmit said dictionary element to said destination.53. Unreliable dictionary compression.
 54. A method as in claim 53,wherein a set of dictionary elements for said method each includes anentire object deliverable from a server to a client.
 55. A method as inclaim 53, wherein a set of dictionary elements for said method includesat least one object larger than one kilobyte.
 56. A system includingmeans for associating, at both a source and a destination, a tag valuewith a dictionary element; means, if said dictionary element is presentat said destination, for transmitting, from said source to saiddestination, said tag value in place of said dictionary element; means,if said dictionary element is not present at said destination, fortransmitting, from said source to said destination, said dictionaryelement.
 57. A system including means for providing a set ofassociations, at both a source and a destination, each associationincluding a tag value and a dictionary element; means for possiblydiscarding one or more of said set of associations at said destination;means for transmitting, from said source to said destination, a selectedtag value or its associated dictionary element, in response to saidsteps for possibly discarding.
 58. A system as in claim 57, includingmeans for transmitting, from said destination to said source, anindication responsive to said steps for possibly discarding; whereby ifsaid dictionary element is still present at said destination, saidsource does not need to transmit said dictionary element to saiddestination.
 59. A system including means for transmitting a dictionaryelement from a source to a destination; means for associating, at bothsaid source and said destination, a tag value with said dictionaryelement; means for possibly discarding said dictionary element at saiddestination; means for transmitting, from said source to saiddestination, said tag value or said dictionary element in response tosaid steps for possibly discarding.
 60. A system as in claim 59,including means for transmitting, from said destination to said source,an indication responsive to said steps for possibly discarding; wherebyif said dictionary element is still present at said destination, saidsource does not need to transmit said dictionary element to saiddestination.